import random
import string
from datetime import datetime, timedelta
from time import sleep
from dao.mqttHelp import MQTTClient
from utils.config import Config

def creatdata(location,device_num,longitude,latitude,lane):
    # 生成每个雷达设备的车辆数据
    all_vehicle_data = []
    current_time = datetime.now()
    device_data = {
        "location":location,
        "device_num":device_num,
        "timestamp":current_time.strftime("%Y/%m/%d-%H:%M:%S"),    # 当前时间
        # "timestamp":(current_time - timedelta(hours=24)).strftime("%Y/%m/%d-%H:%M:%S"),  # 前一天时间
        "event":
            {
                "longitude": longitude,
                "latitude": latitude,
                "altitude": 45.00,
                "x": 15,
                "y": 850,
                "event_id": random.uniform(0, 1200000),
                "type": 18,
                # random.randint(1, 18),   # 事件类型：0 正常，1 实线变道，2 超低速，3 超高速，4 占用应急车道，5 异常停
                             #车，6 逆行，7 闯红灯，8 直行道左转，9 直行道右转，10 左转道直行，11 左转道
                             #右转，12 违法掉头，13 机动车占用非机动车道，14 非机动车占用机动车道，
                             #15 事故，16 行人闯入，17 非机动车闯入，18 工作人员闯入，100 拥堵，101
                             #反向溢出预警，102 正向溢出预警，103 抛洒物，150 特殊车辆优先通行     666测试火灾用
                "status": 2,
                "stake_mark": location,
                "speed": 52,
                "lane": lane,
                "km_dir": 1,
                "video": "ftp://zty:Abc.12345@193.169.3.251:21/2024_01_17/193.169.3.201/1705486259052.mp4",
                "image": "ftp://zty:Abc.12345@193.169.3.251:21/2024_01_17/193.169.3.201/1705486259052.jpg",
                "plate": "湘A7173A",
                #"湘A" + ''.join(random.choices(string.ascii_uppercase + string.digits, k=5)),
                # 事件车辆的车牌(其他不报plate字段)：1 实线变道，2 超低速，3 超高速，4 占用应急车道，5 异常停车，6 逆行，7 闯红灯，8 直行道左转，9直行道右转，10 左转道直行，11 左转道右转，12 违法掉头，13 机动车占用非机动车道
                "orig_lane": 2,  # 1 实线变道的原车道
                "jam_level": 3,  # 100 拥堵事件的拥堵等级
                "x0": 3202,  # 发生 100 拥堵事件的结束位置
                "y0": -30,  # 发生 100 拥堵事件的结束位置
                "lon0": 112.53613256,  # 发生 100 拥堵事件的结束位置
                "lat0": 28.3524275,  # 发生 100 拥堵事件的结束位置
                "alt0": 35.2  # 发生 100 拥堵事件的结束位置
            }
    }

    all_vehicle_data.append(device_data)
    return all_vehicle_data

config = Config('./conf/config.ini')
nanxian_main=config.read_value('leishi', 'nanxian_main')
nanxian_zhuru =config.read_value('leishi', 'nanxian_zhuru')
nanxian_zharu =config.read_value('leishi', 'nanxian_zharu')
nanxian_zhuchu=config.read_value('leishi', 'nanxian_zhuchu')
nanxian_zhachu=config.read_value('leishi', 'nanxian_zhachu')

beixian_main = config.read_value('leishi', 'beixian_main')
beixian_zhuru=config.read_value('leishi', 'beixian_zhuru')
beixian_zharu=config.read_value('leishi', 'beixian_zharu')
beixian_zhuchu=config.read_value('leishi', 'beixian_zhuchu')
beixian_zhachu=config.read_value('leishi', 'beixian_zhachu')

# 实例化 MQTTClient    模拟雷视上报事件
mqtt_client = MQTTClient()
path_list=eval(nanxian_main)
# path_list=eval(beixian_zhuru)
for i in range(1):
    n=5#random.randint(0, 10)
    all_vehicle_data=creatdata(path_list[n][0],path_list[n][3],path_list[n][1],path_list[n][2],2)
    print(all_vehicle_data)
    mqtt_client.concurrent_publish("bizdata/event_msg", all_vehicle_data)
    sleep(3)
    i+=1
